# Project 7 Bluetooth Remote Control ### **1.説明** ![image-20250510083107283](media/A47.png) このキットにはDX-BT24 5.1 Bluetoothモジュールが含まれています。このBluetoothモジュールは256Kbのメモリを持ち、V5.1BLE Bluetooth仕様に準拠しており、ATコマンドをサポートしています。ユーザーは必要に応じてシリアルポートのボーレートやデバイス名などのパラメータを変更できます。 さらに、UARTインターフェースとBluetoothシリアルポートの透過伝送をサポートしており、低コスト、小型、低消費電力、高感度の送受信の利点も備えています。特に、強力な機能を実現するために必要な周辺部品はわずかです。 ### **2.仕様** - Bluetoothプロトコル: Bluetooth Specification V5.1 BLE - 動作距離: 開放環境で40mの超長距離通信が可能 - 動作周波数: 2.4GHz ISMバンド - 通信インターフェース: UART - Bluetooth認証: FCC CE ROHS REACH認証基準に準拠 - シリアルポートパラメータ: 9600、8データビット、1ストップビット、パリティなし、フロー制御なし - 電源: 5V DC - 動作温度: –10℃ ~ +65℃ ### **3.用途** DX-BT24モジュールはBT5.1 BLEプロトコルもサポートしており、BLE Bluetooth機能を持つiOSデバイスに直接接続でき、バックグラウンドプログラムの常駐実行もサポートします。主に短距離データの無線伝送分野で使用され、煩雑なケーブル接続を回避し、シリアルケーブルの直接置き換えが可能です。 **BT24モジュールの成功した応用分野:** ※ Bluetooth無線データ伝送; ※ 携帯電話、コンピュータ周辺機器; ※ ハンドヘルドPOS機器; ※ 医療機器の無線データ伝送; ※ スマートホーム制御; ※ Bluetoothプリンター; ※ Bluetoothリモコン玩具; ※ 共有自転車; ### **4.ポート** ![420af966-aaa4-4736-9d35-2a9ccc7215f3](media/A48.png) ①STATE:ステータスピン ②RX:受信ピン ③TX:送信ピン ④GND:グランド ⑤VCC:電源 ⑥EN:イネーブルピン BTモジュールを開発ボードに接続します。 | Uno | BT24 | | :--: | :--: | | TX | RX | | RX | TX | | VCC | 5V | | GND | GND | ### **5.コンポーネント** | 開発ボード *1 | 8833 モータードライバー *1 | 赤色LEDモジュール*1 | | :------------------------------: | :----------------------------------------------: | :------------------------------------------------------------: | | ![img](media/A8.jpg) | ![img](media/A9.jpg) | ![img](media/A10.jpg) | | 3P デュポンワイヤー*1 | USBケーブル*1 | DX-BT24 Bluetoothモジュール*1 | | ![img](media/A11.jpg) | ![img](media/A12.jpg) | ![image-20250510083534209](media/A49.png) | ### **6.配線図** ![image-20250510083927915](media/A50.png) BTモジュールのRXD、TXD、GND、VCCはそれぞれTX、RX、G、5Vに接続します。 BTモジュールのSTATEとBRKは接続不要です。 注意:BTモジュールを8833ボードに挿入する際の向きに注意してください。コードをアップロードする前に挿入しないでください。 ### **7.テストコード** **注意:** テストコードをアップロードする前にBluetoothモジュールを取り外す必要があります。そうしないとコードのアップロードに失敗します。コードのアップロードが成功した後にBluetoothモジュールを接続してください。 ```c //*********************************************************************** /* keyestudio 4wd BT Car lesson 7.1 Bluetooth http://www.keyestudio.com */ char ble_val; //character variable, used to store the value received by Bluetooth void setup() { Serial.begin(9600); } void loop() { if(Serial.available() > 0) //シリアルバッファにデータがあるか確認 { ble_val = Serial.read(); //シリアルバッファからデータを読み取る Serial.println(ble_val); //表示 } } //*********************************************************************** ``` ### **8.テスト結果** コードをV4.0ボードに正常にアップロードした後、配線図に従って配線を接続し、USBケーブルでコンピュータに接続してボードに電源を供給します。電源を入れた後、BTモジュールを挿入するとLEDが点滅し、その後BTアプリをダウンロードする必要があります。 ### **9.Bluetoothアプリのダウンロード** **Appleシステム** (1). iPhoneのApp Storeを開きます。 (2). 「keyes BT car」を検索し、アプリを携帯にダウンロードします。 ![image-20250510084716811](media/A51.png) (3). インストール後、アプリのインターフェースに入ります。 ![image-20250510084812821](media/A52.png) (4). 左上の「**Connect**」ボタンをクリックしてBluetoothを自動検索します。**BT24**が見つかったら「**Connect**」をクリックしてBluetoothに接続し、次に ![image-20250510084833837](media/A53.png) をクリックして4WDスマートカーの制御インターフェースに入ります。  ![image-20250510084902641](media/A54.png) **Androidシステム** (1). Google Playストアに入り、「keyes 4wd」を検索します。 ![image-20250510084916086](media/A55.png) (2). インストール後のアプリアイコンは以下の通りです。 ![image-20250510084933465](media/A56.png) (3). アプリをクリックして以下のページに入ります。 ![image-20250510084946146](media/A57.png) (4). Bluetoothに接続した後、電源を入れるとBluetoothモジュールのLEDインジケーターが点滅します。「**Connect**」をタップしてBluetoothを検索します。 ![image-20250510085007028](media/A58.png) (5). **BT24**が見つかったら「Connect」をクリックしてBluetoothに接続します。「**Connect**」が「**is Connected**」に変わればBluetooth接続成功を示します。下の画像のようにBluetoothのLEDが点灯したままになります。 ![image-20250510085026219](media/A59.png) (6). Bluetoothモジュールに接続した後、シリアルモニターを開き、ボーレートを9600に設定します。Bluetoothアプリのボタンを押すと、対応する文字が表示されます。以下の通りです: ![image-20250510085039562](media/A60.png) | キー | 機能 | | ------------------------- | --------------------------------- | | ![img](./media/A61.jpg) | DX-BT24 5.1 Bluetoothモジュールとペアリング | | ![img](./media/A62.jpg) | Bluetoothの切断 | | | 制御文字 | 制御文字 | | ------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | | ![img](media/A63.jpg) | 押す: F
離す: S | ボタンを押すと車が前進します;
離すと停止します | | ![img](media/A64.jpg) | 押す: L
離す: S | ボタンを押すと車が左に曲がります;
離すと停止します | | ![img](media/A65.jpg) | 押す: R
離す: S | ボタンを押すと車が右に曲がります;
離すと停止します | | ![img](media/A66.jpg) | 押す: B
離す: S | ボタンを押すと車が後退します;
離すと停止します | | ![img](media/A67.jpg) | 押す: “a”
離す: “S” | クリックで加速(最大値:255) | | ![img](media/A68.jpg) | 押す: “d”
離す: “S” | クリックで減速(最小値:0) | | ![img](media/A69.jpg) | クリックで携帯電話の重力感知機能を開始
もう一度クリックで重力感知制御を終了 | | | ![img](media/A70.jpg) | クリックで“X”を送信、
もう一度クリックで“S”を送信 | ライントレース機能を開始;
もう一度クリックで終了 | | ![img](media/A71.jpg) | クリックで“Y”を送信、
もう一度クリックで“S”を送信 | 超音波回避機能を開始;
もう一度クリックで終了 | | ![img](media/A72.jpg) | クリックで“U”を送信、
もう一度クリックで“S”を送信 | 超音波追従機能を開始;
もう一度クリックで終了 | | ![img](media/A73.jpg) | クリックで“G”を送信、
もう一度クリックで“S”を送信 | 制限機能を開始;
もう一度クリックで終了 | ### **10.コード説明** **Serial.available()** : シリアルポートのバッファに現在残っている文字数を返します。一般的に、この関数はシリアルポートのバッファにデータがあるかどうかを判断するために使用されます。Serial.available() > 0 の場合、シリアルポートがデータを受信しており、読み取ることができることを意味します。 **Serial.read() :** シリアルポートのバッファから1バイトのデータを取り出して読み取ることを指します。例えば、デバイスがシリアルポートを通じてArduinoにデータを送信した場合、Serial.read()を使って送信されたデータを読み取ることができます。 ### **11.拡張練習** ここでは、携帯電話から送信されたコマンドを使ってLEDライトをオンまたはオフにする方法を見ていきます。配線図を見ると、LEDはD9ピンに接続されています。 ![image-20250510085856954](media/A74.png) ```c //**************************************************************************** /* keyestudio smart turtle robot lesson 7.2 Bluetooth LED http://www.keyestudio.com */ int ledpin=9; char ble_val;// Bluetoothで受信した値を格納するための文字変数 void setup() { Serial.begin(9600); pinMode(ledpin,OUTPUT); } void loop() { if (Serial.available() > 0) // シリアルポートのキャッシュにデータがあるか確認 { ble_val = Serial.read(); // シリアルポートのキャッシュからデータを読み取る Serial.print("DATA RECEIVED:"); Serial.println(ble_val); if (ble_val == 'F') { digitalWrite(ledpin, HIGH); Serial.println("led on"); } if (ble_val == 'B') { digitalWrite(ledpin, LOW); Serial.println("led off"); } } } //**************************************************************************** ``` コードをV4.0ボードに正常にアップロードした後、配線図に従って配線を接続し、USBケーブルでコンピュータに接続してボードに電源を供給します。電源を入れたら、![image-20250510085919039](media/A75.png) と ![image-20250510085931709](media/A76.png) をクリックしてLEDの点灯と消灯を制御します。